﻿namespace Bowlus.Common.Communications
{
    using System.ServiceModel;

    /*
      * This is the only service contract: Client notify Server a msg. 
      * Fire and forget. Client doesn't get blocked.
      * Server take action based on the simple string msg. The actural server action is defined in the Handle delegate.
      */
    // TODO: can we make this interface internal to the Bowlus.Communication module?
    [ServiceContract(Namespace = "Bowlus.Communications")]
    public interface ICommunicationService
    {
        // Service implementation should guarantee this method be NOT blocked.
        [OperationContract(IsOneWay = true)]
        void HandleMessage(BowlusMessage msg);
    }
}
